package com.example.demo.common;

import lombok.Data;

/**
 * 結果データクラス
 */
@Data
public class JsonResult {
    /**
     * レスポンスコード
     */
    private Integer statusCode;

    /**
     * レスポンス結果
     */
    private Object resultDto;
    
    /**
     * レスポンストータル
     */
    private long total;
    
    /**
     * 正常に戻りました
     * @param data
     * @return JsonResult
     */
    public static JsonResult success() {
        JsonResult result = new JsonResult();
        result.setStatusCode(CommonEnum.SUCCESS.getResultCode());
        return result;
    }
    
    /**
     * 正常に戻りました
     * @param data
     * @return JsonResult
     */
    public static JsonResult success(Integer statusCode) {
        JsonResult result = new JsonResult();
        result.setStatusCode(statusCode);
        return result;
    }
    
    /**
     * 正常に戻りました
     * @param data
     * @return JsonResult
     */
    public static JsonResult success(Object data) {
        JsonResult result = new JsonResult();
        result.setStatusCode(CommonEnum.SUCCESS.getResultCode());
        result.setResultDto(data);
        return result;
    }
    
    /**
     * 正常一覧に戻りました
     * @param data
     * @param totalSize
     * @return JsonResult
     */
    public static JsonResult success(Object data, Long totalSize) {
        JsonResult result = new JsonResult();
        result.setStatusCode(CommonEnum.SUCCESS.getResultCode());
        result.setResultDto(data);
        result.setTotal(totalSize);
        return result;
    }

    /**
     * 異常に戻りました
     * @param data
     * @return JsonResult
     */
    public static JsonResult error(Integer code, Object data) {
        JsonResult result = new JsonResult();
        result.setStatusCode(code);
        result.setResultDto(data);
        return result;
    }
    
    /**
     * 異常に戻りました
     * @param data
     * @return JsonResult
     */
    public static JsonResult error(Integer code) {
        JsonResult result = new JsonResult();
        result.setStatusCode(code);
        return result;
    }
}
